package org.feiye.studyday21;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HashMapTest {
//Map存储键-值对（英文简称-国家全称）
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		// Map用put();方法存值
		map.put("CN", "中国");
		map.put("US", "美国");
		map.put("UK", "英国");
		map.put("FR", "法国");

		// 获得map中元素的对数
		System.out.println(map.size());

		// 通过键获得值
		String str = (map.get("US"));
		System.out.println(str);

		// 判断map中是否含有某键,用containsKey();方法。是否含有某值用containsValue();方法
		boolean containsKey = map.containsKey("CN");
		System.out.println(containsKey);
		System.out.println(map.containsValue("日本"));

		// Map的remove方法，删除键值对
		map.remove("CN");

		System.out.println(map.containsKey("CN"));

		// 分别拿到键集；值集；键值对集
		System.out.println(map.keySet());
		System.out.println(map.values());
		System.out.println(map);

		// clear();清空方法； isEmpty();判空
		/*
		 * map.clear(); if (map.isEmpty()) { System.out.println("该集合已被清空"); }
		 */

		// 分别获取map中的键和值

		Collection<String> values = map.values();// 获得值集

		// foreach获得所有key和value（先拿key，再根据key拿value（get（key）方法））
		Set<String> keys = map.keySet();// 获得键集
		for (Object object : keys) {
			String key = (String) object;
			String value = map.get(key);
			System.out.println(key + "-" + value);
		}
		System.out.println(">>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>");
		// Iterator迭代器获得所有key和value（先拿key，再根据key拿value（get（key）方法））
		Iterator<String> iterator = keys.iterator();
		while (iterator.hasNext()) {
			String key = iterator.next();
			String value = map.get(key);
			System.out.println(key + "-" + value);
		}
		System.out.println(">>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>");
		// 先拿到Map中的key-value，再分别拿到key和value!!!
		Iterator<Map.Entry<String, String>> iterator2 = map.entrySet().iterator();
		while (iterator2.hasNext()) {
			Map.Entry<String, String> en = iterator2.next();
			System.out.println(en.getKey() + "-" + en.getValue());
			/*
			 * Map.Entry o = (Map.Entry) iterator2.next(); Object key = o.getKey(); Object
			 * value = o.getValue(); System.out.println(key + "-" + value);
			 */
		}
	}
}
